//
// Created by ASUS on 2024/12/11/星期三.
//
//带权并查集 与算法基础课中的食物链较像
//以一个根结点为参照，l-1到根结点的距离为d[l-1] r到根结点的距离为d[r]
//根据前缀和原理 [l, r] 区间和为 d[r] - d[l - 1]
#include <bits/stdc++.h>
using namespace std;

#define int long long

class Bcj{
	int n;
	vector<int> fa,d;//d表示到根节点的距离
public:
	Bcj(int n):n(n){
		fa.resize(n);
		iota(fa.begin(), fa.end(), 0);
		d.resize(n);
	}

	int find(int x){
		if(fa[x]!=x){
			int t=fa[x];
			fa[x]=find(fa[x]);
			d[x]+=d[t];
		}
		return fa[x];
	}

	void merge(int l,int r,int w){
		if(l>r) swap(l,r);
		int fl = find(l-1), fr = find(r);
		//合并
		fa[fl] = fr;
		d[fl] = d[r] - d[l-1] - w;
	}

	int query(int l,int r){
		int fl = find(l - 1), fr = find(r);
		if (fl != fr) return -1;
		return d[r] - d[l - 1];
	}
};




signed main()
{
	int n, m, q;
	cin >> n >> m >> q;
	//初始化并查集
	for (int i = 1; i <= n; i++) p[i] = i;
	while (m-- > 0)
	{
		LL l, r, s;
		cin >> l >> r >> s;
	}

	//查询
	//如果l, r都在同一个集合，则存在结果，否则不能查出结果
	while (q-- > 0)
	{
		int l, r;

		cin >> l >> r;
		int pl = find(l - 1), pr = find(r);

		if (pl != pr) cout << "UNKNOWN" << endl;
		else cout << d[r] - d[l - 1] << endl;
	}

	return 0;
}